// •	定义一个名为 Shape 的类型，它可以是以下形状之一：
// •	Circle: 包含 radius: number 属性
// •	Rectangle: 包含 width: number 和 height: number 属性
// •	Triangle: 包含 base: number 和 height: number 属性
// •	定义一个函数 calculateArea(shape: Shape): number，它可以计算不同形状的面积。
// •	定义一个名为 ShapeWithColor 的类型，它是 Shape 和 color: string 的交叉类型。
// •	定义一个函数 drawShape(shape: ShapeWithColor): void，它可以根据形状和颜色绘制图形。
interface Circle {
  radius: number;
}
interface Rectangle {
  width: number;
  height: number;
}
interface Triangle {
  base: number;
  height: number;
}
type Shape = Circle | Rectangle | Triangle;

function calculateArea(shape: Shape): number {
  if ('radius' in shape) {
    return 3.14 * shape.radius * shape.radius;
  } else if ('width' in shape) {
    return shape.width * shape.height;
  } else {
    return (shape.base * shape.height) / 2;
  }
}
console.log(calculateArea({ radius: 5 }));
console.log(calculateArea({ width: 5, height: 6 }));
console.log(calculateArea({ base: 5, height: 6 }));
// console.log(calculateArea({radius:5,width:6,height:7}));
// •	定义一个类型别名 Point，它代表一个包含 x: number 和 y: number 属性的对象。
// •	定义一个函数 getDistance(point1: Point, point2: Point): number，它可以计算两点之间的距离。
// •	使用类型断言将一个对象转换为 Point 类型。
type Point = { x: number; y: number };
function getDistance(point1: Point, point2: Point): number {
  return Math.sqrt(
    Math.pow(point1.x - point2.x, 2) + Math.pow(point1.y - point2.y, 2),
  );
}
const point1 = { x: 1, y: 2 } as Point;
console.log(getDistance(point1, { x: 4, y: 6 }));
// console.log(getDistance({x:1,y:2},{x:4,y:6}));
